<?php

namespace app\week3705\controller;

use think\Cache;
use think\Controller;

class Login extends Controller
{
    /**
     * 处理登录信息
     *Method loginDo
     *user:大飞
     *time:2021/7/5 10:38
     */
    public function loginDo()
    {

    }


    /**
     * 发送短信
     *Method sendCode
     *user:大飞
     *time:2021/7/5 10:39
     */
    public function sendCode()
    {
        //接收手机号
        $data['phoneNum'] = input('get.phoneNum');
        //判断是否接到手机号
        $validate_res = $this->validate($data,[
            'phoneNum' => 'require|regex:1[3-9]\d{9}',
        ]);

        //手机号格式不正确
        if($validate_res !== true){
            return json(['code'=>400,'msg'=>$validate_res,'data'=>'']);
        }

        //防止多次发送
        if(Cache::has('phone_time_'.$data['phoneNum'])){
            if(time()-Cache::get('phone_time_'.$data['phoneNum']) < 60){
                return json(['code'=>400,'msg'=>'请1分钟后重试','data'=>'']);
            }else{
                //大于60秒 已过期 删除记录的时间
                Cache::rm('phone_time_'.$data['phoneNum']);
            }
        }
        //生成验证码
        $code = mt_rand(1000,9999);
        //发送的信息格式
        $msg = "【小程序】您的验证码是{$code},有效时间为30秒.若非本人操作请忽略此消息！";

        //进行发送
        $res = sendMsg($data['phone'],$msg);

        //发送失败
        if(!$res){
            return json(['code'=>400,'msg'=>$res,'data'=>'']);
        }
        //将手机号存入缓存 携带生成时间 以及 生成的验证码
        Cache::set('phone_time_'.$data['phone'],time());
        Cache::set('phone_code_'.$data['phone'],$code);
        //设置验证码过期时间 使用的是Cache redis储存方式
        $redis = Cache::store('redis')->handler();
        $redis->expire('phone_code_'.$data['phone'],30);

        //发送成功返回值
        return json(['code'=>200,'msg'=>'发送成功','data'=>$code]);


    }
}
